home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 23 / AACD 23.iso / AACD / Programming / tek / msg / getmsgattrs.c < prev    next >
C/C++ Source or Header  |  2001-05-12  |  1KB  |  84 lines

  1.  
  2. #include "tek/msg.h"
  3. #include "tek/kn/exec.h"
  4. #include "tek/kn/sock.h"
  5.  
  6. /* 
  7. **    TEKlib
  8. **    (C) 2001 TEK neoscientists
  9. **    all rights reserved.
  10. **
  11. **    TUINT numatt = TGetMsgAttrs(TAPTR msg, TTAGITEM *tags)
  12. **
  13. **    get message attributes.
  14. */
  15.  
  16. TUINT TGetMsgAttrs(TAPTR mem, TTAGITEM *tags)
  17. {
  18.     TUINT numatt = 0;
  19.  
  20.     if (mem)
  21.     {
  22.         TMSG *msg = ((TMSG *) mem) - 1;
  23.         TAPTR *attp;
  24.         
  25.         attp = (TAPTR *) TGetTagValue(TMsg_Size, TNULL, tags);
  26.         if (attp)
  27.         {
  28.             *attp = (TAPTR) (msg->size - sizeof(TMSG));
  29.             numatt++;
  30.         }
  31.  
  32.         attp = (TAPTR *) TGetTagValue(TMsg_Status, TNULL, tags);
  33.         if (attp)
  34.         {
  35.             *attp = (TAPTR) msg->status;
  36.             numatt++;
  37.         }
  38.  
  39.         attp = (TAPTR *) TGetTagValue(TMsg_Sender, TNULL, tags);
  40.         if (attp)
  41.         {
  42.             if (msg->sender)
  43.             {
  44.                 *attp = (TAPTR) ((knnetmsg *) msg->sender)->symbolicname;        /* combined IP:port name string */
  45.             }
  46.             else
  47.             {
  48.                 *attp = TNULL;
  49.             }
  50.             numatt++;
  51.         }
  52.  
  53.         attp = (TAPTR *) TGetTagValue(TMsg_SenderHost, TNULL, tags);
  54.         if (attp)
  55.         {
  56.             if (msg->sender)
  57.             {
  58.                 *attp = (TAPTR) kn_getsockname(((knnetmsg *) msg->sender)->sendername);        /* host IP string */
  59.             }
  60.             else
  61.             {
  62.                 *attp = TNULL;
  63.             }
  64.             numatt++;
  65.         }
  66.  
  67.         attp = (TAPTR *) TGetTagValue(TMsg_SenderPort, TNULL, tags);
  68.         if (attp)
  69.         {
  70.             if (msg->sender)
  71.             {
  72.                 *attp = (TAPTR) ((TUINT) kn_getsockport(((knnetmsg *) msg->sender)->sendername));    /* port nr. */
  73.             }
  74.             else
  75.             {
  76.                 *attp = (TAPTR) 0xffffffff;
  77.             }
  78.             numatt++;
  79.         }
  80.     }
  81.  
  82.     return numatt;
  83. }
  84.